package com.tarena.lbs.business.service.impl;

import com.tarena.lbs.base.protocol.pager.PageResult;
import com.tarena.lbs.business.dao.mapper.StoreMapper;
import com.tarena.lbs.business.pojo.param.StoreParam;
import com.tarena.lbs.business.pojo.po.StorePO;
import com.tarena.lbs.business.pojo.query.StoreQuery;
import com.tarena.lbs.business.pojo.vo.StoreVO;
import com.tarena.lbs.business.service.StoreService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

@Service
public class StoreServiceImpl implements StoreService {

    @Resource
    private StoreMapper storeMapper;


    // 原有基础方法...
    public PageResult<StoreVO> pageList(StoreQuery query) {
        // 计算分页偏移量：(当前页码-1) * 每页大小
        int offset = (query.getCurrent() - 1) * query.getSize();
        query.setOffset(offset);
        query.setSize(query.getSize());
        // 查询当前页的数据列表
        List<StoreVO> list = storeMapper.pageList(query);
        System.out.println("分页查询门店列表结果: {StoreServiceImpl::}--->"+ list);
        // 查询满足条件的总记录数
        long total = storeMapper.count(query);
        // 封装分页结果
        PageResult<StoreVO> pageResult = new PageResult<>();
        // 设置当前页数据列表
        pageResult.setObjects(list);
        // 设置总记录数
        pageResult.setTotal(total);
        // 设置每页大小
        pageResult.setPageSize(query.getSize());
        // 设置当前页码
        pageResult.setPageNo(query.getCurrent());
        // 返回封装好的分页结果
        return pageResult;
    }

//    // 新增：按多城市ID查询店铺
//    public PageResult<StoreVO> getStoreByCityIds(AreaStoreQuery query) {
//        // 计算分页偏移量（BasePageQuery已包含current和size）
//        int offset = (query.getCurrent() - 1) * query.getSize();
//        query.setOffset(offset);
//        query.setLimit(query.getSize());
//
//        // 查询列表和总条数
//        List<StoreVO> list = storeMapper.getStoreByCityIds(query);
//        long total = storeMapper.countByCityIds(query);
//
//        // 封装分页结果
//        PageResult<StoreVO> pageResult = new PageResult<>();
//        pageResult.setObjects(list);
//        pageResult.setTotal(total);
//        pageResult.setPageSize(query.getSize());
//        pageResult.setPageNo(query.getCurrent());
//        return pageResult;
//    }

    // 原有saveStore、removeStore、updateStatus等方法...
    public boolean saveStore(StoreParam param) {
        StorePO po = new StorePO();
        po.setBusinessId(param.getBusinessId());
        po.setStoreName(param.getStoreName());
        po.setStorePhone(param.getStorePhone());
        po.setStoreHeadName(param.getStoreHeadName());
        po.setStoreHeadPhone(param.getStoreHeadPhone());
        po.setProvinceId(param.getProvinceId());
        po.setCityId(param.getCityId());
        po.setAreaId(param.getAreaId());
        po.setStoreLocation(param.getStoreLocation());
        po.setStoreLongitude(param.getLongitude());
        po.setStoreLatitude(param.getLatitude());
        po.setStoreImagesId(String.join(",", param.getStoreImagesIds()));
        po.setStoreLogo(param.getStoreLogo());
        po.setStoreIntroduction(param.getStoreIntroduction());
        po.setSort(param.getSort());
        po.setTradeTime(param.getTradeTime());
        po.setStoreStatus(param.getStoreStatus());
        po.setCreateTime(new Date());
        po.setUpdateTime(new Date());
        return storeMapper.insert(po) > 0;
    }



    public boolean removeStore(Integer id) {
        System.out.println(id);
        return storeMapper.deleteById(id)>0;
    }

    public boolean updateStatus(Integer id, Integer status) {
        return storeMapper.updateStatus(id, status) > 0;
    }
}